package org.orm.hsc;

import java.io.File;

import  org.orm.hsc.session.*;

/**
 * @author
 * @date 2025-04-18
 * @Description 负责创建configuration
 *  一个工厂可以创建多个SqlSession对象与数据库交互n次
 *   一个工厂创建的session应该是和一个数据库交互的
 *   如果需要和多个数据库交互，就应该产生多个工厂
 *    一个工厂只需要读取一次配置信息
 *    负责创建SqlSession:每和数据库交互一次，都需要创建一个session 负责为session传递config
 */
public class SqlSessionFactory {
    private Configuration configuration;
    // 构造函数创建 Configuration
    public SqlSessionFactory(String classpathFile){
        configuration = new Configuration(classpathFile);
    }
    // 构造函数创建 Configuration
    public SqlSessionFactory(File file){
        configuration = new Configuration(file);
    }

    // 默认设置手动提交事务
    public org.orm.hsc.session.SqlSession openSession(){
        return  new DefaultSqlSession(configuration, false);
    }

    // 手动控制提交事务
    public org.orm.hsc.session.SqlSession openSession(boolean isAutoCommit){
        return  new DefaultSqlSession(configuration, isAutoCommit);
    }
}
